Often, it is desirable to configure a computing platform on a computing device to execute an application in the shortest possible time while using the least amount of power possible. Unfortunately however, there is typically a trade off between the amount of time and the amount of power that a computing platform requires to execute an application. As such, one option is to focus on minimizing the amount of power consumed to execute an application within a certain tolerable amount of time. In this regard, one approach involves providing a resource model that identifies available computing platform processing options for executing an application along with the power consumption requirements and processing speeds associated with each option. In theory, such a model might be used to identify and select a preferable processing option associated with executing the application using the least amount of power within a given time constraint. Alternatively, such a model might also be used to identify and select a preferable processing option associated with the fastest application execution time within a given power consumption constraint.
Given the complexity of computing platforms and applications, and the vast array of options for executing each task associated with these applications, providing a realistic model for identifying a preferable option from among the identified options can present a challenge. For instance, since an application can have any number of executable tasks with any number of processing requirements and/or dependencies, and since computing platforms can have multiple processors and one or more buses communicatively linking each of these processors, the number of possible schedules for executing the tasks can be enormous. To further complicate matters, these processors and/or bus(es) can be programmed/configured to operate at different setting(s), or operation modes, associated with distinct processing speed and power consumption parameters.
Existing configuration/scheduling approaches directed to minimizing the power consumption of computing platforms for processing an application within a certain time constraint are not optimal because they tend to rely on models which do not account for discrete computing resource operating modes and/or transition costs for transitioning between each mode when executing an application. In other words, these models typically (1) treat each processor and/or bus in a computing platform as being associated with a continuous range of operational settings rather than a series of discrete operational modes and/or (2) treat each potential task in isolation—thus failing to account for the power and latency costs for a resource to transition from one mode to another.
For example, many processors can be configured to operate in one of several possible modes of operation, each being associated with a certain computing/executing speed and power consumption requirement. This can range from active modes such as full speed or partial speed (e.g., 25% of full speed), to dormant modes such as idle or standby. As such, transitioning from one of these modes to another can entail certain speed and power consumption costs, such as waking up to a certain active mode for instance. Approaches that rely on models that do not account for these operating modes and/or these transition costs fail to provide a realistic representation of the available resources on the platform. This in turn makes it unlikely that approaches relying on these models will be successful in identifying an optimal operating configuration(s) and schedule for executing tasks within a given time.
Accordingly, there is a need for a configuration/scheduling approach that utilizes a more realistic resource model to reduce a computing platform's power consumption when executing an application within a given amount of time.